package com.ehotting.eaf.security.utils;

import com.ehotting.eaf.core.constant.Constants;
import com.ehotting.eaf.core.utils.SpringUtils;
import com.ehotting.eaf.core.utils.StringUtils;
import com.ehotting.eaf.redis.service.RedisService;
import com.ehotting.eaf.core.domain.system.api.SysIp;

import java.util.Collection;
import java.util.List;

/**
 * 黑名单IP缓存工具类
 */
public class BlackIpUtils {

    /**
     * 设置黑名单IP缓存
     *
     * @param sysIps 黑名单IP数据列表
     */
    public static void setIpCache(List<SysIp> sysIps)
    {
        SpringUtils.getBean(RedisService.class).setCacheObject(Constants.SYS_IP_KEY, sysIps);
    }

    /**
     * 获取黑名单IP缓存
     *
     * @return dictDatas 黑名单IP数据列表
     */
    public static List<SysIp> getIpCache()
    {
        Object cacheObj = SpringUtils.getBean(RedisService.class).getCacheObject(Constants.SYS_IP_KEY);
        if (StringUtils.isNotNull(cacheObj))
        {
            return StringUtils.cast(cacheObj);
        }
        return null;
    }

    /**
     * 删除黑名单IP缓存
     *
     */
    public static void removeDictCache()
    {
        SpringUtils.getBean(RedisService.class).deleteObject(Constants.SYS_IP_KEY);
    }

    /**
     * 清空黑名单IP缓存
     */
    public static void clearIpCache()
    {
        Collection<String> keys = SpringUtils.getBean(RedisService.class).keys(Constants.SYS_IP_KEY);
        SpringUtils.getBean(RedisService.class).deleteObject(keys);
    }

}
